Наша задача будет создать настоящий компонент COM+ используя NET. Смотрим код:
using System;
using System.EnterpriseServices;
using System.Reflection;
[assembly: ApplicationName("MyComponent")]
[assembly: AssemblyKeyFileAttribute("MyComponent.snk")]
[Transaction(TransactionOption.Required)]
public class MyComponent : ServicedComponent
{
[AutoComplete]
public void Call( string message )
{
Console.WriteLine("Callee called: " + message);
}
}
Первое это то, что класс должен быть унаследован от класса ServicedComponent который обеспечивает базовые возможности компонента. Обязательно нужно устойчивое имя и название компонента, все это мы описываем в атрибутах. У класса стаит атрибуты поддержки транзакций. Все можно собирать.
sn -k MyComponent.snk csc /target:library /r:System.EnterpriseServices.dll MyComponent.cs
При сборке я сразу генерирую имя с включаю его в проект. В результате в каталоге будет насколько файлов.

Здесь DLL с кодом самой компоненты и snk с ключом.